package top.minuy.structure.queue.deque;

/**
 * 双端队列
 *
 * @author Minuy
 * @time 21:58
 * @date 2021/8/22
 * @param <E> 支持泛型
 */
public interface Deque<E> {
    /**
     * 获取队列大小
     *
     * @return 队列大小
     */
    int getSize();

    /**
     * 判断队列是否为空
     *
     * @return 队列是否为空
     */
    boolean isEmpty();

    /**
     * 从队列前面添加元素
     *
     * @param e 要添加的元素
     */
    void addFront(E e);

    /**
     * 从队列后面添加元素
     *
     * @param e 要添加的元素
     */
    void addLast(E e);

    /**
     * 从队列前面移除队列元素
     *
     * @return 被移除的队列元素
     */
    E removeFront();

    /**
     * 从队列后面移除队列元素
     *
     * @return 被移除的队列元素
     */
    E removeLast();
}
